home *** CD-ROM | disk | FTP | other *** search
- // TASIPKeyPane.cp - AppleShare IP Dialog Pane Object
- //
- // Apple Macintosh Developer Technical Support
- // Written by: Vinnie Moscaritolo
- //
- // Copyright (work in progress) Apple Computer, Inc All rights reserved.
- //
- // You may incorporate this sample code into your applications without
- // restriction, though the sample code has been provided "AS IS" and the
- // responsibility for its operation is 100% yours. However, what you are
- // not permitted to do is to redistribute the source as "DSC Sample Code"
- // after having made changes. If you're going to re-distribute the source,
- // we require that you make it clear in the source that the code was
- // descended from Apple Sample Code, but that you've made changes.
- //
-
- #include <Appearance.h>
- #include <Drag.h>
-
- #include "TASIPKeyPane.h"
- #include "TPGPException.h"
-
- static enum{
- kServerAuthPaneDITL = 140,
- };
-
- enum {
- kKeyDragBox = 1 ,
- kKeyInfoBox ,
- kKeyErrorBox, // 15
- kKeyDetailsBox, // --
- kKeyNameTitle, // 36
- kKeyName, // 27
- kKeyTypeTitle, // --
- kKeyTypeData, // 21
- kKeySizeTitle, // 16
- kKeySizeData, // 22
- kTrustBox, // 17
- kCreateTitle, // 18
- kCreateDate , // 24
- kExpiresTitle, // 19 expires
- kExpireDate ,
- kValidTitle,
- kValidValue ,
- kUnTrustTitle,
- kFPBox,
- kFingerprint,
- kTrustedTitle,
- kInvalidTitle,
- kTrustValue,
- kExpiredIcon
- };
-
-
- #define kKeyStringsID 129
- static enum {
- kKeyNameStrID =1,
- kKeyIDStrID ,
- kKeyTypeStrID,
- kKeySizeStrID,
- kKeyCreatedStrID,
- kKeyExpiresStrID,
- kKeyExpiredStrID,
- kKeyRevokedStrID,
- kKeyInvalidStrID,
- kKeyValidStrID,
- kKeyTrustedStrID,
- kKeyUnTrustedStrID,
- kKeyServerKeyIsEnabled,
- kKeyServerKeyIsDisabled,
- kKeyServerKeyIsRevoked,
- kKeyServerKeyIsExpired,
- kKeyServerKeyNotFound,
-
- };
-
-
- // ---------------------------------------------------------------------------
- #pragma mark Local Prototypes
- // ---------------------------------------------------------------------------
- static pascal OSErr KeyDragSendDataProc (FlavorType flavorType, void *context, ItemReference itemRef, DragReference dragRef);
-
- #pragma mark -
-
- // ---------------------------------------------------------------------------
- TASIPKeyPane::TASIPKeyPane( DialogPtr dialog, SInt16 items, TASIPPGPkey* serverKey)
- : TPane (dialog, items)
- // ---------------------------------------------------------------------------
- //
- {
- ControlFontStyleRec fontInfo;
- ControlHandle theControl;
- Str255 text;
-
- fKey = serverKey;
-
- AppendDialogItemList(dialog, kServerAuthPaneDITL, overlayDITL );
-
- fontInfo.just = teJustRight;
- fontInfo.flags = kControlUseFontMask | kControlUseJustMask;
- fontInfo.font = kControlFontSmallBoldSystemFont;
-
- // Key Name
- GetIndString(text, kKeyStringsID,kKeyNameStrID);
- GetDialogItemAsControl( dialog, items + kKeyNameTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- // Key Type
- GetIndString(text, kKeyStringsID,kKeyTypeStrID);
- GetDialogItemAsControl( dialog, items + kKeyTypeTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- // Key Size
- GetIndString(text, kKeyStringsID,kKeySizeStrID);
- GetDialogItemAsControl( dialog, items + kKeySizeTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- // Key Creation
- GetIndString(text, kKeyStringsID,kKeyCreatedStrID);
- GetDialogItemAsControl( dialog, items + kCreateTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- // Key Expiration
- GetIndString(text, kKeyStringsID, kKeyExpiresStrID);
- GetDialogItemAsControl( dialog, items + kExpiresTitle, &fKeyExpiresTitle );
- SetControlData( fKeyExpiresTitle, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( fKeyExpiresTitle, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- fontInfo.font = kControlFontSmallSystemFont;
-
- // Trust Model
- GetIndString(text, kKeyStringsID,kKeyInvalidStrID);
- GetDialogItemAsControl( dialog, items + kInvalidTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetIndString(text, kKeyStringsID,kKeyUnTrustedStrID);
- GetDialogItemAsControl( dialog, items + kUnTrustTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- fontInfo.just = teJustLeft;
-
- GetDialogItemAsControl( dialog, items + kKeyErrorBox, &theControl );
- // SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
- HideControl(theControl);
-
- GetIndString(text, kKeyStringsID,kKeyValidStrID);
- GetDialogItemAsControl( dialog, items + kValidTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetIndString(text, kKeyStringsID,kKeyTrustedStrID);
- GetDialogItemAsControl( dialog, items + kTrustedTitle, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, text[0], (Ptr)(text+1));
- SetControlData( theControl, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kCreateDate, &fKeyCreateDate );
- SetControlData( fKeyCreateDate, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kExpireDate, &fKeyExpiredDate );
- SetControlData( fKeyExpiredDate, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kKeySizeData, &fKeySize );
- SetControlData( fKeySize, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kKeyTypeData, &fKeyType );
- SetControlData( fKeyType, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kKeyName, &fKeyName );
- SetControlData( fKeyName, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- fontInfo.just = teJustCenter;
- GetDialogItemAsControl( dialog, items + kFingerprint, &fFingerPrint );
- SetControlData( fFingerPrint, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
-
- fontInfo.font = kControlFontSmallSystemFont;
- fontInfo.flags = kControlUseFontMask;
-
- GetDialogItemAsControl( dialog, items + kValidValue, &fKeyValidValue );
- SetControlMinimum(fKeyValidValue, 0);
- SetControlMaximum(fKeyValidValue, 2);
-
- GetDialogItemAsControl( dialog, items + kTrustValue, &fKeyTrustValue );
- SetControlMinimum(fKeyTrustValue, 0);
- SetControlMaximum(fKeyTrustValue, 2);
-
- fontInfo.font = kControlFontSmallBoldSystemFont;
- fontInfo.flags = kControlUseFontMask;
- GetDialogItemAsControl( dialog, items + kKeyInfoBox, &fKeyInfoBox );
- SetControlData( fKeyInfoBox, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kTrustBox, &fKeyTrustBox );
- SetControlData( fKeyTrustBox, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kFPBox, &fKeyFPBox );
- SetControlData( fKeyFPBox, 0, kControlStaticTextStyleTag, sizeof fontInfo, (Ptr)&fontInfo);
-
- GetDialogItemAsControl( dialog, items + kExpiredIcon, &fKeyExpiredIcon );
- GetDialogItemAsControl( dialog, items + kKeyDetailsBox, &fKeyDetailsBox );
- GetDialogItemAsControl( dialog, items + kKeyDragBox, &fKeyDragBox );
- }
-
-
-
-
- // ---------------------------------------------------------------------------
- TASIPKeyPane::~TASIPKeyPane()
- // ---------------------------------------------------------------------------
- //
- {
- ShortenDITL( fDialog, CountDITL(fDialog) - fOrigItems);
- }
-
- // ---------------------------------------------------------------------------
- void TASIPKeyPane::Idle(void)
- // ---------------------------------------------------------------------------
- //
- {
-
- }
-
-
-
-
-
- // ---------------------------------------------------------------------------
- void TASIPKeyPane::Refresh(void)
- // ---------------------------------------------------------------------------
- //
- {
- ControlFontStyleRec fontInfo;
- Size theSize;
- Str255 buffer;
-
-
- if( fKey->IsOperational() )
- {
-
- // Hide Error Message
- // GetDialogItemAsControl( fDialog, kKeyErrorBox, &theControl );
- // HideControl(theControl);
-
-
- // Key User Name
- fKey->GetPrimaryUserNamePString( (StringPtr)buffer);
- SetControlData( fKeyName, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
-
- // key Fingerprint
- fKey->GetFingerprintPString( (StringPtr)buffer);
- SetControlData( fFingerPrint, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
-
- // Key type
- fKey->GetPublicKeyAlgorithmPstring ( (StringPtr)buffer);
- SetControlData( fKeyType, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
-
- // Key Size
- NumToString(fKey->GetKeySize(), buffer);
- SetControlData( fKeySize, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
-
- // created
- DateString( fKey->GetCreateDate() , shortDate, buffer, nil);
- SetControlData( fKeyCreateDate, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
-
-
- // expiration
- if( fKey->IsRevoked() )
- {
- // revoked
- SetControlVisibility(fKeyExpiredIcon,true, true);
- GetIndString(buffer, kKeyStringsID, kKeyRevokedStrID);
- SetControlData( fKeyExpiresTitle, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
- HideControl(fKeyExpiredDate);
- }
- else
- {
- // expired
- SetControlVisibility(fKeyExpiredIcon, fKey->IsExpired() , true);
-
- GetIndString(buffer, kKeyStringsID, fKey->IsExpired() ?kKeyExpiredStrID:kKeyExpiresStrID);
- SetControlData( fKeyExpiresTitle, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
-
- if( fKey->GetExpireDate() != kPGPExpirationTime_Never)
- DateString(fKey->GetExpireDate() , shortDate, buffer, nil);
- else
- PLstrcpy(buffer, "\pnever");
- SetControlData( fKeyExpiredDate, 0, kControlStaticTextTextTag, buffer[0], (Ptr)(buffer+1));
- ShowControl(fKeyExpiredDate);
- }
-
- // key validity
- switch(fKey->GetValidity())
- {
- default:
- case kPGPValidity_Unknown:
- case kPGPValidity_Invalid:
- SetControlValue(fKeyValidValue, 0 );
- break;
- case kPGPValidity_Marginal:
- SetControlValue(fKeyValidValue, 1 );
- break;
- case kPGPValidity_Complete:
- SetControlValue(fKeyValidValue, 2 );
- break;
- }
-
-
- // key trust
- SetControlValue(fKeyTrustValue, fKey->IsAxiomatic() ? 3 : fKey->GetTrustLevel());
-
- // set the server key title Info
- GetIndString(buffer, kKeyStringsID,
- fKey->IsRevoked() ? kKeyServerKeyIsRevoked:
- fKey->IsExpired() ? kKeyServerKeyIsExpired:
- fKey->IsDisabled()? kKeyServerKeyIsDisabled:kKeyServerKeyIsEnabled);
- SetControlTitle(fKeyInfoBox, buffer);
-
- ShowControl(fKeyDetailsBox);
- ShowControl(fKeyFPBox);
- ShowControl(fKeyTrustBox);
-
- // if key is disabled grey out the boxes
-
- if( fKey->IsDisabled())
- {
- DeactivateControl(fKeyInfoBox);
- DeactivateControl(fKeyFPBox);
- }
- else
- {
- ActivateControl(fKeyInfoBox);
- ActivateControl(fKeyFPBox);
- }
-
- // if key is expired or revoked then the trust is meaningless.
- if( fKey->IsExpired() | fKey->IsRevoked() | fKey->IsDisabled())
- DeactivateControl(fKeyTrustBox);
- else ActivateControl(fKeyTrustBox);
-
- }
- else
- {
- GetIndString(buffer, kKeyStringsID, kKeyServerKeyNotFound);
- SetControlTitle(fKeyInfoBox, buffer);
-
- DeactivateControl(fKeyInfoBox);
- ShowControl(fKeyFPBox);
- DeactivateControl(fKeyFPBox);
- HideControl(fKeyTrustBox);
-
-
- // HideControl(fFingerPrint);
- // HideControl(fKeyFPBox);
-
- // DeactivateControl(fKeyDetailsBox);
-
- /* Str255 errorMsg, errorMsg2;
- Str63 keyName ;
-
- fKey->GetKeyNamePString(keyName);
-
- GetDialogItemAsControl( fDialog, kKeyName, &theControl );
- HideControl(theControl);
-
- GetDialogItemAsControl( fDialog, kKeyDetailsBox, &theControl );
- HideControl(theControl);
-
- GetIndString(errorMsg, kDialogStringsID, kServerKeyNotFoundErrorMsg1);
- PLstrcat(errorMsg, keyName);
- GetIndString(errorMsg2, kDialogStringsID, kServerKeyNotFoundErrorMsg2);
- PLstrcat(errorMsg, errorMsg2);
-
- GetDialogItemAsControl( fDialog, kKeyErrorBox, &theControl );
- SetControlData( theControl, 0, kControlStaticTextTextTag, errorMsg[0], (Ptr)(errorMsg+1));
- ShowControl(theControl);
- */
- }
-
- }
-
- // ---------------------------------------------------------------------------
- Boolean TASIPKeyPane::HandleMouseDown(EventRecord *event)
- // ---------------------------------------------------------------------------
- //
- {
- OSErr err = noErr;
- Point here = event->where;
- Boolean handled;
-
- GlobalToLocal(&here);
-
- if( (handled = PtInRect (here , &(**fKeyDragBox).contrlRect)) // is it in our space
- && ( NewDrag != nil) // check if drag supported?
- &&( fKey && fKey->IsOperational()) // its a good key
- && (WaitMouseMoved (event->where))) // user has moved out of drag box
- {
- DragSendDataUPP dragSendDataProcUPP = NewDragSendDataProc (KeyDragSendDataProc);
- DragReference dragRef;
- if (!(err = NewDrag (&dragRef)))
- {
- Point globalPoint = {0,0};
- RgnHandle dragRgn = NewRgn();
- RgnHandle tempRgn = NewRgn();
-
- LocalToGlobal (&globalPoint);
-
- SetDragSendProc (dragRef,dragSendDataProcUPP,fKey);
- AddDragItemFlavor(dragRef, 0, 'TEXT', nil ,0 , nil);
- AddDragItemFlavor(dragRef, 0, kFlavorTypeClippingName, nil ,0 , nil);
-
- RectRgn(tempRgn, &(**fKeyDragBox).contrlRect);
- CopyRgn(tempRgn,dragRgn);
- InsetRgn(tempRgn,1,1);
- DiffRgn(dragRgn,tempRgn, dragRgn);
- OffsetRgn(dragRgn, globalPoint.h, globalPoint.v);
- TrackDrag (dragRef,event,dragRgn);
-
- DisposeRgn (tempRgn);
- DisposeRgn (dragRgn);
- DisposeDrag (dragRef);
- }
-
- DisposeRoutineDescriptor(dragSendDataProcUPP);
- }
- return handled;
- }
-
-
- // ---------------------------------------------------------------------------
- void TASIPKeyPane::ItemHit(SInt16 item)
- // ---------------------------------------------------------------------------
- //
- {
- SInt16 localItem;
- OSErr err = noErr;
-
- localItem = item - fOrigItems;
-
- switch ( localItem )
- {
- case kKeyDragBox:
-
-
- break;
-
- }
-
- }
-
-
-
- // ---------------------------------------------------------------------------
- static pascal OSErr KeyDragSendDataProc (FlavorType flavorType, void *context, ItemReference itemRef, DragReference dragRef)
- // ---------------------------------------------------------------------------
- //
- {
-
- TPGPkey* theKey = (TPGPkey*)context;
- OSErr err = noErr;
-
-
- switch(flavorType)
- {
- case 'TEXT':
- {
- Str255 keyName;
- void* buf = nil;
- PGPSize bufSize;
-
- theKey->Export(&buf,&bufSize);
- theKey->GetPrimaryUserNamePString(keyName);
-
- SetDragItemFlavorData(dragRef, itemRef, 'TEXT', buf ,bufSize , nil);
- SetDragItemFlavorData(dragRef, itemRef, kFlavorTypeClippingName, (Ptr)(keyName+1) , keyName[0], nil);
- PGPFreeData(buf);
- }
- break;
-
- default:
- break;
- }
-
-
- return err;
- }
-
- #pragma mark -
-
-